package com.example.maze;


public class Edge {
   //[ ========== static part ==========
   
   //] ========== static part ==========
   Vertex v1, v2;
   
   public Edge(Vertex v1, Vertex v2) {
      this.v1= v1; this.v2= v2;
   }
   
   //[ 取得 Edge在 Graph List中的編號, 
   //[ 還原 Spanning Tree會用到.
   public long index() { 
      //[ row: posM(N-1)+ posN
      //[ col: posM(N)  + posN + M(N-1)
      int M= DataSet.MAZE_M,
          N= DataSet.MAZE_N;
      int v1posM= v1.posM,
          v1posN= v1.posN,
          v2posM= v2.posM;
      if(v1posM == v2posM) {  // row edge
         long ll= v1posM*(N-1)+v1posN;
//         android.util.Log.d("DebugMsg", this.toString()+ll);
         return v1posM*(N-1)+v1posN;
      } else {                // col edge
         long ll= v1posM*N+v1posN+M*(N-1);
//         android.util.Log.d("DebugMsg", this.toString()+ll);
         return v1posM*N+v1posN+M*(N-1);
      }   
   }
    
   //[ Server上沒有 DataSet, 這改由外部引入 M, N
   public long index(int M,int N) { 
      //[ row: posM(N-1)+ posN
      //[ col: posM(N)  + posN + M(N-1)
      int v1posM= v1.posM,
          v1posN= v1.posN,
          v2posM= v2.posM;
      if(v1posM == v2posM) {  // row edge
         long ll= v1posM*(N-1)+v1posN;
//         android.util.Log.d("DebugMsg", this.toString()+ll);
         return v1posM*(N-1)+v1posN;
      } else {                // col edge
         long ll= v1posM*N+v1posN+M*(N-1);
//         android.util.Log.d("DebugMsg", this.toString()+ll);
         return v1posM*N+v1posN+M*(N-1);
      }   
   }
   
   @Override
   public String toString() {
      return v1.toString()+ " -- " +v2.toString();
   }
}